Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Powerful event emitter.
npm install --save dot-event
Part of the beauty of the dot-event
API is that it can shrink down to incredibly simple functionality.
Here we have the simplest possible subscriber and emitter:
import dotEvent from "dot-event"
const events = dotEvent()
events.on(() => {
/* do something */
})
events.emit()
Subscription listeners can be asynchronous:
events.on(async () => {})
await events.emit()
The emitter returns a promise that waits for all listeners to resolve concurrently.
Use dot-props to maintain distinct subscriptions:
events.on("emit.hello.world", () => {})
events.emit("hello.world") // emits
events.emit() // doesn't emit
Dot-props come in handy with the onAny
subscriber, which subscribes to a dot-prop and its child props:
events.onAny("emit.hello", () => {})
events.emit("hello") // emits
events.emit("hello.world") // emits
events.emit() // doesn't emit
You might be confused why this subscription prop is emit.hello
:
events.on("emit.hello", () => {})
events.emit("hello") // emits
This is because emit
is an "operation", and you can have more than one.
First, define your custom operation:
events.setOp("create")
Then use it:
events.on("create", () => {})
events.create() // emits the create operation
Subscription listeners receive a single object argument. To add to that object, pass an object to the emitter:
events.on(({ hello }) => {
/* hello === "world" */
})
events.emit({ hello: "world" })
The listener argument also contains an event
property with extra information, such as the emitter arguments:
events.on(({ event }) => {
/* event.args === [true] */
})
events.emit(true)
Subscribe to before or after the main subscription listener:
events.on("before", () => {
/* 1 */
})
events.on(() => {
/* 2 */
})
events.on("after", () => {
/* 3 */
})
events.emit()
Subscribe to any emit:
events.onAny(() => {})
events.emit() // emits
events.emit("hello") // emits
events.emit("hello.world") // emits
When used with a dot-prop, it subscribes to any child prop emit:
events.onAny("emit.hello", () => {})
events.emit("hello") // emits
events.emit("hello.world") // emits
events.emit() // doesn't emit
Like on
, but emit immediately if a previous emit occurred:
events.emit()
events.onEmitted(() => {}) // emits immediately
events.emit() // emits
Like onAny
, but emit immediately if a previous emit occurred:
events.emit("hello.world")
events.onAnyEmitted("emit.hello", () => {}) // emits immediately
events.emit("hello.world") // emits
events.emit() // doesn't emit
events.once(() => {})
events.emit() // emits
events.emit() // doesn't emit
Like once
, but emit immediately if a previous emit occurred:
events.emit()
events.onceEmitted(() => {}) // emits immediately
events.emit() // doesn't emit
A combination of once
and onAny
:
events.onceAny("emit.hello", () => {})
events.emit("hello.world") // emits
events.emit("hello.world") // doesn't emit
A combination of once
, onAny
, and onEmitted
:
events.emit("hello.world")
events.onceAnyEmitted("emit.hello", () => {}) // emits immediately
events.emit("hello.world") // doesn't emit
Build lots of dot-prop subscriptions at once:
events.on({
"emit.hello": () => {},
"emit.hello.world": () => {},
})
Function | Features | Empty | Props | Wildcard | Prop variable | Wildcard op |
---|---|---|---|---|---|---|
after | Subscribes to after emit | ✗ | ✗ | ✗ | ✗ | ✗ |
before | Subscribes to before emit | ✗ | ✗ | ✗ | ✗ | ✗ |
emit | Emits | ✗ | ✗ | ✗ | ✗ | ✗ |
on | Subscribes | ✗ | ✗ | ✗ | ✗ | ✗ |
onAny | Subscribes to child props | ✓ | ✓ | ✓ | ✓ | ✓ |
onAnyEmitted | Subscribes to child prop Emit immediately if emitted | ✓ | ✓ | ✓ | ✓ | ✓ |
onEmitted | Emit immediately if emitted | ✗ | ✗ | ✗ | ✗ | ✗ |
once | Subscribes once Returns promise | ✗ | ✗ | ✗ | ✗ | ✗ |
onceAny | Subscribes to child props once Returns promise | ✓ | ✓ | ✓ | ✓ | ✓ |
onceAnyEmitted | Subscribes to child props once Emit immediately if emitted Returns promise | ✓ | ✓ | ✓ | ✓ | ✓ |
onceEmitted | Subscribes to child props once Emit immediately if emitted Returns promise | ✗ | ✗ | ✗ | ✗ | ✗ |
withOptions | Adds options to emit Adds options to subscribe | ✗ | ✗ | ✗ | ✗ | ✗ |
FAQs
Powerful event emitter
The npm package dot-event receives a total of 90 weekly downloads. As such, dot-event popularity was classified as not popular.
We found that dot-event demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.